def xor_encrypt(data: bytes, key: str) -> bytes:
    """
    使用自定义 key 进行 XOR 加密（对称）
    :param data: 要加密的原始字节数据
    :param key: 任意长度的字符串密钥
    :return: 加密后的字节数据
    """
    key_bytes = key.encode()
    key_len = len(key_bytes)
    return bytes([b ^ key_bytes[i % key_len] for i, b in enumerate(data)])


def xor_decrypt(encrypted_data: bytes, key: str) -> bytes:
    """
    XOR 解密，与加密函数完全相同（对称算法）
    """
    return xor_encrypt(encrypted_data, key)  # 同加密函数

if __name__ == "__main__":
    original_text = "Hello, XOR 加密测试！"
    key = "my_secret_key"

    # 加密
    encrypted = xor_encrypt(original_text.encode('utf-8'), key)
    # print("加密后（十六进制）:", encrypted.hex())
    print(encrypted)

    # 解密
    decrypted = xor_decrypt(encrypted, key)
    print("解密后:", decrypted.decode('utf-8'))
